The video display has become the quintessential means for displaying computer information to a user. Today, we are all familiar with the video monitor that is connected to our personal computer. Inside the personal computer is a display generator. The display generator receives information from the main processor included in the personal computer. It should be appreciated that the main processor executes application programs like word processors, spreadsheets and e-mail clients. As the main processor executes a particular application, that application causes the processor to generate a series of video display instructions. The video display instructions are then delivered to the display generator. The display generator executes the video display instructions in order to form an image on the video monitor.
Every now and then, the video display on a personal computer becomes corrupted. Sometimes new lines appear over other lines. Another interesting display artifact occurs when we try to scroll a user window—part of the window simply won't scroll correctly. Most of us are now familiar with various display artifacts that are caused by the display generator. These normally occur when we switch applications or scroll a user window. This happens because applications and various scrollable user windows all share the same display generator. In this type of an environment, the various applications that are executing in a personal computer are typically not aware of each other. As such, one application may interfere with the video presentation that another application is attempting to create.
In most commercial applications, such as in a personal computer, users can easily tolerate display artifacts that occur as one application interferes with the video presentation of another. There are, however, other domains where such display artifacts are not only insufferable, but such artifacts can lead to a catastrophic result. Consider, for example, a display system in a power plant. A display system in a power plant may be used to present current power levels, operating temperatures and other vital information. In fact, an engineer responsible for operating a power plant may rely on the information presented on a video display to make critical operational decisions. A wrong decision in this type of situation can lead to brown-outs—or worse.
Video displays are also commonly used to present information to the operator of a motor vehicle, a maritime vessel and an aircraft. In each of these illustrative use cases, an error in presentation of an intended image may lead to dire consequences. Because of this, many display devices in motor vehicles, maritime vessels and aircraft are created as single-function displays. This, though, is problematic because most of these display devices are situated in an operator's console. Because the space in the operator's console is limited, there is strong motivation to develop and use multi-purpose displays. In fact, avionics in a modern aircraft will be designed with multiple-use displays. Today, there are even aircraft consoles that are highly integrated. In these highly integrated consoles, one main display is used simultaneously by numerous aircraft functions.
Because a multi-purpose display still uses a single graphics generator to drive the display device, the single display generator is shared amongst a plurality of different application programs, all executing in a common environment. This results in a distinct probability that one application will eventually corrupt the appearance of a display generated by another application.
One means for reducing the risk associated with such cross-application corruption of a display system is to use a highly partitioned processing system. In a highly partitioned processing system, the resources available to a processor executing multiple functions (i.e. applications) are shared in structured manner. For example, memory is partitioned to ensure that one application process does not encroach on memory allocated to another process. In a multi-process environment, there are other techniques that are commonly employed to protect the resources used by one process from inadvertent access by another process. For example, hardware checks can be employed to make sure that a network interface is only accessed by a protocol stack. These same hardware checks can also be used to make sure that a lower priority task does not preempt a higher priority task.
All of these techniques fail to protect an image created by one task from corruption by another process executing in the same multi-process environment. The reason for this is that all of the processes executing in the multi-process environment need, in essence, unbridled access to the display generator that actually generates the video signal that drives a video display. When one task is given uncontrolled access to the display generator, there is nothing to prevent that task from corrupting another image previously rendered by the display generator when it was controlled by another task.